Programmable integrated circuits (ICs) are devices that can be programmed to perform specified logic functions. One type of programmable IC, the field programmable gate array (FPGA), typically includes an array of programmable tiles. These programmable tiles comprise various types of logic blocks, which can include, for example, input/output blocks (IOBs), configurable logic blocks (CLBs), dedicated random access memory blocks (BRAM), multipliers, digital signal processing blocks (DSPs), processors, clock managers, delay lock loops (DLLs), bus or network interfaces such as Peripheral Component Interconnect Express (PCIe) and Ethernet and so forth.
Each programmable tile typically includes both programmable interconnect and programmable logic. The programmable interconnect typically includes a large number of interconnect lines of varying lengths interconnected by programmable interconnect points (PIPs). The programmable logic implements the logic of a user design using programmable elements that can include, for example, function generators, registers, arithmetic logic, and so forth.
The programmable interconnect and programmable logic are typically programmed by loading a set of configuration data into internal configuration memory cells that define how the programmable elements are configured. The configuration data can be read from memory (e.g., from an external PROM) or written into the FPGA by an external device. The collective states of the individual memory cells then determine the function of the FPGA.
Some programmable ICs include an embedded processor that is capable of executing program code. The processor can be fabricated as part of the same die that includes the programmable logic circuitry and the programmable interconnect circuitry, also referred to collectively as the “programmable circuitry” of the IC. It should be appreciated that execution of program code within a processor is distinguishable from “programming” or “configuring” the programmable circuitry that may be available on an IC. The act of programming or configuring the programmable circuitry of an IC results in the implementation of different physical circuitry as specified by the configuration data within the programmable circuitry.
In some applications, circuit components are exposed to environments where radiation is present. Sub-atomic particles of such radiation can cause an error when the particles pass through the source/drain-to-well junction of transistors. Neutron and alpha particles are of particular concern due to their ability to inject charge into the junction. The primary source of neutrons is solar radiation, while alpha particles may come from radioactive decay of packaging materials. The charge induced by particle strikes can upset the switching state of the transistor struck by the particle, resulting in an error. As the charge dissipates, nearby transistors may also be affected. The charge induced by particle strikes can upset the static state of bi-stable data storage circuits (e.g., latches, flip-flops, registers, and memory cells) causing the circuit to remember the incorrect data value. This type of error is referred to as a single event upset (SEU).